A typical media processing unit may include a server and a client. The server receives data from any standard multimedia source (e.g. camera, microphone) and transforms the data into a media data. The media data may be either stored on a media storage device or may be communicated over a network to another server or client. On the other hand, the client may receive the media data from a media storage device or from a network and convert it into a form that can be presented on a user interface.
The server may receive data from the multimedia source in analog form. The server may include an Analog to Digital Converter (ADC) where the data may be converted into a digital form. The digital data is then sent to a compression unit, which may compress the digital data. The compression unit may compress the digital data according to the type of the digital data. For example, if the digital data is an audio data then the compression may be performed according to an audio compression technique. On the other hand, if the digital data includes video data then the compression may be performed according to a video compression technique. The compressed digital data is then supplied to a packet converter. The packet converter converts the compressed digital data into packets of media data. The packets of media data may include timestamps and other details such as, encoding technique, synchronizing bit (preambles etc) that relate to the digital data. At a further block, if the media data includes both audio and video contents then the media data may be multiplexed or synchronized so that audio and video data may be presented synchronously. The multiplexed/synchronized media data may be then supplied to a network or a media storage device.
The client, on the other hand, may perform the steps performed by the server in the reverse order. The client may receive (packets of) media data from a network or a media storage device. It may identify packets of media data according type of information content (audio or video) thereof. It may further synchronize according to the timestamp of the media data and uncompress the media data. The client may convert the media data into analog form and provide the analog form of the media data to a presentation unit according to the timestamp of the corresponding media data.
Generally, the clients are provided with buffers to interface the network/media storage device from which the media data is required to be received by the client. The buffers may be provided with the client because typically the networks/media storage devices provide the media data at substantially constant bit rate, however, the client may not require the media data at the constant bit rate.
A typical client does not start processing media data until the media data is sufficiently buffered. Further, the client and the server may have a clock offset; accordingly the client first receives a reference time from the server and adjusts its local time according to the reference time before processing the media data. Whenever, there is a change in the reference time of the server, the local time of the client is adjusted accordingly.
One of the problems of this mechanism surfaces during a “seek” operation, where media data is required to be accessed from random locations. As a result, the local time and the reference time may be required to be adjusted. The media data buffered in the system till this time, as a result, loses its time reference. Special handling is required for this scenario and typically, the buffered media-data is dropped or flushed out of the buffers. Similar problems arise due to lost or change in the reference time during fast-forward, fast-rewind and other non-regular-play (also known as trick-play) operations.